// 公共类

var $ = layui.$;
var api = layui.api;
var setter = layui.setter
var admin = layui.admin
var comment = function (url, type, params, callback, iscontentType, token) {
    var ajaxObj = {
        type: type,
        timeout: 50000,
        // headers: { 'token': layui.sessionData(setter.tableName).token },
        url: url,
        data: params,
        dataType: "json",
        contentType: 'application/json', // 数据返回类型
        success: function (result) {
            callback(result);
        },
        error: function (err) {
            layer.alert("网络异常");
        },
        complete: function () {
        }
    };
    if (iscontentType) {
        ajaxObj["contentType"] = "application/json";
        ajaxObj["data"] = JSON.stringify(ajaxObj["data"]);
    }
    if (token) {
        ajaxObj["headers"] = { 'token': layui.sessionData(token.tableName).token };
    } else {
        ajaxObj["headers"] = { 'token': layui.sessionData(setter.tableName).token };
    }
    $.ajax(ajaxObj);
};

// 合并对象
var objMerge = function (target, source) {
    for (var obj in source) {
        target[obj] = source[obj];
    }
    return target;
};

// 方式渲染表格并异步获取表格数据
// 使用done函数 传入option{callback:function}即可 method默认get
// 必穿参数 table option{elem，url，cols }
// 该函数返回可重载对象
var tableRender = function (table, option, callback) {
    var params = {
        skin: "nob", //行边框风格
        elem: "", // table对象
        // height: 420, // table高度
        // url: '', // 接口地址
        title: "用户表",
        page: true, //开启分页'
        limit: 10, // 单页数量
        limits: [10, 20, 30, 40, 50, 60, 70, 80, 90], // 数量下拉框
        loading: true, // 是否开启loading
        method: "get", // 请求方式
        // where: {}, // 其他参数
        headers: { 'token': layui.sessionData(setter.tableName).token },
        contentType: "application/json", // 数据返回类型
        parseData: function (res) {

            if (res.code != "0") return;
            return {
                code: res.code, //解析接口状态
                msg: res.message, //解析提示文本
                count: res.data.total, //解析数据长度
                data: res.data.list //解析数据列表
            };
        },
        request: {
            // 重置变量名
            pageName: "pageNum", //页码的参数名称，默认：page
            limitName: "pageSize" //每页数据量的参数名，默认：limit
        },
        response: {
            // 重置变量
            // statusName: 'status', //规定数据状态的字段名称，默认：code
            // statusCode: 200, //规定成功的状态码，默认：0
            // msgName: 'hint', //规定状态信息的字段名称，默认：msg
            // countName: 'total', //规定数据总数的字段名称，默认：count
            // dataName: 'rows' //规定数据列表的字段名称，默认：data
        },
        done: function (res, curr, count) {
            // 数据渲染完的回调
            callback ? callback(res, curr, count) : "";
            //如果是异步请求数据方式，res即为你接口返回的信息。
            //如果是直接赋值的方式，res即为：{data: [], count: 99} data为当前页数据、count为数据总长度
        },
        // data: [{ // 无url时默认数据
        //     username: 1,
        //     experience: '工单名称',
        //     sex: '01010',
        //     score: '工单名称',
        //     city: '巡检人',
        // }],
        cols: [], unresize: false // 表头
    };
    if (option.url) option.url = option.url;
    objMerge(params, option);
    return table.render(params);
};

// 监听行工具事件事件
// 三个参数 layuitable对象 lay-filter="对应的值"  编辑函数 删除函数
var tableOn = function (table, ID, editFunc, delFunc) {
    var id = "tool(" + ID + ")";
    table.on(id, function (obj) {
        //注：tool 是工具条事件名，test 是 table 原始容器的属性 lay-filter="对应的值"
        var data = obj.data, //获得当前行数据
            layEvent = obj.event; //获得 lay-event 对应的值
        if (layEvent === "edit") {
            // 编辑操作
            editFunc(obj);
            // layer.msg('编辑操作');
        } else if (layEvent === "del") {
            // 删除操作
            layer.confirm("确定删除吗", function (index) {
                delFunc(obj, index);
                // obj.del(); //删除对应行（tr）的DOM结构
                // layer.close(index);
                //向服务端发送删除指令
            });
        }
    });
};

// 弹出层
var layerOpen = function (url) {
    layer.open({
        type: 2,
        title: false,
        area: ["392px", "399px"],
        fixed: true,
        shadeClose: false,
        closeBtn: 0,
        content: [url, "no"]
    });
};

// 输入下拉选择
function selectIn(ele, inputEvent, liClickEvent) {
    $(ele + " input")
        .on("blur", function () {
            var _this = this;
            setTimeout(function () {
                $(_this)
                    .next()
                    .css("display", "none");
            }, 200);
        })
        .on("input", function () {
            $(this)
                .next()
                .css("display", "block");
            _this = this;
            inputEvent(_this);
        })
        .next()
        .on("click", "li", function () {
            liClickEvent(this);
        });
}
// 表格重载
function reload(example, params) {
    example.reload({
        where: params, //设定异步数据接口的额外参数，任意设
        page: {
            curr: 1 //重新从第 1 页开始
        }
    });
}
// 中文英文  数字字母